2 Project Management Plan
2.1 Overview
2.1.1 WBS & Estimation
| ID | WBS Item | Complexity | Estimated Effort (man-days) |
|---|---|---|---|
| 1 | Analysis | 20 | |
| 1.1 | SRS | Medium | 5 |
| 1.2 | UML | Simple | 5 |
| 1.3 | Technology Research | Medium | 10 |
| 2 | Design | 20 | |
| 2.1 | Architecture Design | Medium | 5 |
| 2.2 | Database Design | Medium | 5 |
| 2.3 | Detailed Design | Medium | 10 |
| 3 | Development | 80 | |
| 3.1 | Backend | Medium | 30 |
| 3.2 | Frontend | Medium | 30 |
| 3.3 | Blockchain | Complex | 10 |
| 3.4 | OCR | Complex | 10 |
| 4 | Testing | 15 | |
| 4.1 | Unit Testing | Simple | 3 |
| 4.2 | Integration Testing | Medium | 5 |
| 4.3 | System Testing | Medium | 7 |
| 5 | Documentation | 20 | |
| 5.1 | Final Report | Medium | 10 |
| 5.2 | Final Product | Medium | 10 |
| # | Total | 155 |
2.1.2 Project Objectives
- Timeliness: 70%
- Allocated Effort (man-days): 90 days
- Quality Coverage:
- Reviewing: 100%
- Unit Test: 95%
- Integration Test: 95%
- System Test: 98%
- User Acceptance Test: 80%
2.1.3 Project Risks
| Risk | Impact | Probability | Mitigation |
|---|---|---|---|
| The team members are not familiar with the technologies used in the project | High | High | The team members will be trained before the project starts |
| The team members can not work together | High | Medium | Prepare a team building activity before the project starts |
| There is not enough time to research the technologies used in the project | High | Low | Find a mentor to help the team members / Find a workaround or similar technology that can be used in the project |
2.2 Management Approach
2.2.1 Project Process
Since parts of the requirements are not clear, we will use a process model of the Agile family called Scrum. Using this model, we can understand requirements, adapt changes quickly and deliver target products in a short time to test & review them for next iterations. The project will be divided into 4 iterations (sprints). Each sprint will be a month long and include 2 phases: planning and development. The planning phase will be used to estimate tasks from the product backlog, create a sprint backlog and assign tasks to the team members to develop in the development phase. At the end of the sprint, the team will review the sprint, discuss the problems and changes during the sprint and plan for the next sprint.
2.2.2 Quality Management
- Reviewing: There will be a meeting every week for the team and the supervisor to review the status of the tasks in the current sprint. The team will show the progress of the tasks and discuss the problems and changes during the sprint. The supervisor will take notes and give advices to the team.
- Defect Prevention: Each change of the code should be reviewed by the code master or the team leader before applying to the main project. They will check for bugs, code smells, anti-patterns and other problems.
- Unit Testing: Each module of the system should be tested before applying to the main project. The team can test the module by themselves or use a testing framework / software to test the module.
- Integration Testing: The team will test the system after each sprint to make sure that the system is working properly. There will be an automatic testing software that includes test scenarios for the system.
- System Testing: The team will test the completed system based on the requirements and the test scenarios. The team can test the system by themselves or use a testing framework / software to test the system.
2.2.3 Training Plan
| Area | Participants | When, Duration | Waiver Criteria |
|---|---|---|---|
| Blockchain | Project Team | 20/07/2022, 2 weeks | Mandatory |
| Hyperledger Fabric | Project Team | 01/10/2022, 2 weeks | Mandatory for Backend Team |
| Java, Javalin | Project Team | 01/09/2022, 1 weeks | Mandatory |
2.3 Master Schedule
| Deliverable | Due | Deliverable Scope |
|---|---|---|
| Project Plan | 05/09/2022 | |
| SRS | 15/09/2022 | |
| Design 1 | 15/09/2022 | Architecture Design, Database |
| Design 2 | 30/09/2022 | Detailed Design |
| Backend | 30/09/2022 | Code, Test, Deployment |
| Frontend | 30/11/2022 | Code, Test, Deployment |
| Extra Services | 30/11/2022 | Blockchain, OCR |
| Final Report | 10/12/2022 | |
| Final Product | 15/12/2022 |
2.4 Project Organization
2.4.1 Team Structure
2.4.2 Roles
| Role | Responsibilities |
|---|---|
| Project Manager | Supervise the project, Manage the team, Manage the schedule, Manage deliverables |
| Analysis Leader | Analyze the requirements, Create SRS, Manage the analysis team |
| Analysis Member | Analyze the requirements, Create SRS |
| Design Leader | Design the system, Create system design document, Manage the design team |
| Design Member | Design the system, Create system design document |
| Backend Leader | Develop the backend, Manage the backend team |
| Backend Member | Develop the backend |
| Frontend Leader | Develop the frontend, Manage the frontend team |
| Frontend Member | Develop the frontend |
| Test Leader | Test the system, Create test report, Manage the test team |
| Test Member | Test the system, Create test report |
2.5 Project Communication
2.5.1 Communication Plan
| Item | Target | Purpose | When | Type |
|---|---|---|---|---|
| Discord | Project Team | Review meeting & Status report | Monday, Friday | Voice, Remote |
| Google Meeting | Project Team & Supervisor | Review meeting, Sprint revision & Closeup | Wednesday | Voice, Remote |
| Messenger | Project Team & Supervisor | Meeting planning, Q&A & Status report | Everyday | Text, Remote |
| FU Library | Project Team | Pair programming & Code review | Planned | Offline |
2.5.2 External Interfaces
| Function | Contact Person | Contact Address | Responsibility |
|---|---|---|---|
| Supervisor | Quach Luyl Da | daql@fpt.edu.vn | Review deliverables, Provide document template, Check project progress, Give advices to project team |
2.6 Configuration Management
2.6.1 Tools & Infrastructures
2.6.1.1 Common
| Type | Tool |
|---|---|
| Version Control | Git, GitHub |
| UML | PlantUML, Graphviz |
| Deployment | Docker |
| Project Management | Quarto, GitHub Projects |
2.6.2 Backend
| Type | Tool |
|---|---|
| Programming Language | Java |
| Library | Javalin, Fabric SDKs, HSCore, Guava, Genson, EvalEx, JWT |
| Compiler | JDK, Lombok |
| UI | TinyLog, JLine, Fabric CLI |
| DBMS | H2, Hibernate, Minifabric |
| IDE / Editor | IntelliJ IDEA, VSCode |
2.6.3 Frontend
| Type | Tool |
|---|---|
| Programming Language | TypeScript |
| Library | React |
| Compiler | Node |
| UI | React |
| IDE / Editor | VSCode |
2.6.4 Document Management
We use Quarto to build documents from Markdown files and use GitHub to manage the files and their changes. A participant will create a new branch to edit the files, create pull requests and wait for the project manager to review the changes and merge to the main branch. Then, it’ll be built in three outputs: a website using GitHub Pages for visualization, A PDF document & A MS-Word document.
2.6.5 Source Code Management
We manage the source code by using GitHub. Endpoints of the project will be upload into separated repositories. Once the code is changed, the participant will create a new branch, create a relevant pull request, and wait for code owners to review and merge to the main branch.